/*
  数组的实例方法：
      every(callback)
       作用：检测/判断 数组中的所有元素是否 都存在满足指定条件
       返回：如果都满足，则返回true；否则（只要有一个不满足）返回false
       执行流程：检测到一个不满足条件的就停止了，否则继续检测
       语法：array.every((item, index, arr) => {
          return 布尔值
          ? return false：表示 item 不符合条件，停止执行
          ? return true：表示item符合条件，继续检测下一个；
       })

       注意：空数组调用every会得到一个true的结果
 */
// 1. 基本类型
const beauty = ['西施', '貂蝉', '杨玉环', '王昭君', '杨幂']
// 检测beauty数组中的元素 是否 都是  姓杨的
// const result = beauty.every(item => {
//   console.log('omg', item)
//   return item.startsWith('杨')
// })
// console.log(result)// ? false
// 检测beauty数组中的元素 是否 都不是  姓古的
// const result = beauty.every(item => {
//   console.log('omg', item)
//   return !item.startsWith('古')
// })
// console.log(result)// ? true

// const waistlines = [55, 43, 70, 58]
// 找出  waistlines数组中腰围 是否  都在 50 以上的
// const result = waistlines.every(item => item > 50)
// console.log(result)// ? false
// 找出  waistlines数组中 腰围 是否  都在 80 以内的
// const result = waistlines.every(item => item < 80)
// console.log(result)// ? true



// 2. 引用类型
const girls = [
  {
    name: '王昭君',
    height: 170
  }, {
    name: '貂蝉',
    height: 172
  }, {
    name: '西施',
    height: 162
  }, {
    name: '杨玉环',
    height: 169
  }
]
// 找出数组中对象的身高 是否都在   165 以上
// const result = girls.every(item => item.height > 165)
// console.log(result)// ? false
// 找出数组中对象的身高 是否都在   180 以内
// const result = girls.every(item => item.height < 180)
// console.log(result)// ? ture

// every方法的原理
Array.prototype._every = function (callback) {
  for (let i = 0; i < this.length; i++) {
    if (!callback(this[i], i, this)) {
      return false
    }
  }
  return true
}
// const result1 = girls._every(item => {
//   console.log('omg')
//   return item.height > 165
// })
// console.log(result1)// ? false
// 找出数组中对象的身高 是否都在   180 以内
const result2 = girls._every(item => {
  console.log('yyds')
  return item.height < 180
})
console.log(result2)// ? true



